package cn.stylefeng.guns.modular.mapper;

import cn.stylefeng.guns.modular.entity.Frame;
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import org.apache.ibatis.annotations.Param;

import java.util.Collection;
import java.util.Map;

/**
 *
 * 日程框架表mapper接口
 *
 * @author third_e
 * @create 2019/12/10 0010-下午 4:16
 */

public interface FrameMapper extends BaseMapper<Frame> {

    /**
     * 通过日程框架名获取框架
     */
    Frame getByFrameName(@Param("frameName") String frameName);


    /**
     * 通过日程框架id查询日程框架的详细信息
     */
    Collection<Frame> selectAllFrameInfo(@Param("frameId") Long frameId);

    /**
     * 根据条件查询角色列表
     * 只有当先用户的框架和其他人发布公开的框架
     *
     * @return
     * @date 2017年2月12日 下午9:14:34
     */
//    Collection<Frame> selectFrames(@Param("page") Page page, @Param("condition") String condition, @Param("userId") Long userId);
    Page<Map<String, Object>> selectFrames(@Param("page") Page page,
                                           @Param("nameOrcontent") String nameOrcontent,
                                           @Param("otherOrmyself") String otherOrmyself,
                                           @Param("beginTime") String beginTime,
                                           @Param("endTime") String endTime,
                                           @Param("userId") Long userId);


    /**
     * 发布日程框架
     * @param frameId
     */
    void releaseFrame(@Param("frameId") Long frameId);

    /**
     * 删除日程框架
     * @param frameId
     */
    void deleteFrame(@Param("frameId") Long frameId);

    /**
     * 获取可用的日程框架
     * @return
     */
    Collection<Frame> selectEnableFrame(@Param("userId") Long userId,
                                        @Param("condition") String condition);
}
